package com.atguigu.p2;


/*
 * Customerlist为Customer对象的管理模块，内部使用数组管理一组Customer对象
 */

public class CustomerList {

	private Customer customers[];//用来保存客户的数组
	private int total;//记录已保存客户的人数
	
	//构造器，初始化数组
	public CustomerList(int totalCustomer)
	{
		customers = new Customer[totalCustomer];
	}
	
	/**
	 * 将客户添加到数组中
	 * @param customer
	 * @return true:添加成功  false:添加失败
	 */
	public boolean addCustomer(Customer customer)
	{
		if(total >= customers.length )
		{
			return false;
		}
		customers[total++] = customer;
		return true;
	}
	
	/**
	 * 对指定的客户进行修改
	 * @param customer
	 * @return true:修改成功  false:修改失败
	 */
	public boolean replaceCustomer(int index,Customer cust)
	{
		if(index<0 || index >= total)
		{
			return false;
		}
		customers[index]=cust;
		return true;
	}
	
	/**
	 * 删除指定位置的客户
	 * @param index
	 * @return true:删除成功  false:删除失败
	 */
	public boolean deleteCustomer(int index)
	{
		if(index<0 || index >= total)
		{
			return false;
		}
		
		for(int i=index;i<total-1;i++)//如果不是total-1，i能取到的最大数为total-1，下面customer[i+1]就能取到total，
			                          //实际customers数组中角标根本取不到customers[total],而是customers[total-1]。
		{
			customers[i] = customers[i+1];
		}
		customers[--total] = null;
		return true;
		
	}
	
	/**
	 * 显示所有客户的信息
	 * @return
	 */
	public Customer[] getAllCustomers()//返回值类型为数组
	{
		//创建一个新的数组来接收customers中的客户，但是新创建的数组依然是Customer类的
		Customer cust[] = new Customer[total];
		for(int i=0;i<cust.length ;i++)
		{
			cust[i] = customers[i];
		}
		
		return cust;//返回数组
	}
	
	/**
	 * 
	 * 获取指定位置的客户信息
	 * @param index
	 * @return 如果找到则返回，如果找不到，则返回null.
	 */
	public Customer getCustomer(int index)
	{
		if(index<0 || index >= total)
		{
			return null;
		}
		return customers[index];
	}
	
	/**
	 * 获取总的客户人数
	 * @return
	 */
	public int getTotal()
	{
		return total;
	}
}
